#include <STC15F2K60S2.H>

void Delay1ms()		//@12.000MHz
{
	unsigned char i, j;
	i = 12;
	j = 169;
	do
	{
		while (--j);
	} while (--i);
}

// 延时n个毫秒函数
void Delay_nMs(unsigned int dtime)
{
	for(;dtime>0; dtime --)
	{
		Delay1ms();
	}
}


//#define LAMP_MODE1    /*使用P0口直接赋值法*/
// #define LAMP_MODE2		/* 使用数组表 */
#define LAMP_MODE3		/* 使用 << 左移运算符 */

int main()
{
	int i=0;
#ifdef 	LAMP_MODE1		//使用P0口直接赋值法
	while(1)
	{
		for(i=0;i<8;i++)
		{
			P0 = 0x01;				// 0000 0001 b
			Delay_nMs(500);
			P0 = 0x02;				// 0000 0010 b				
			Delay_nMs(500);
			P0 = 0x04;				// 0000 0100 b
			Delay_nMs(500);
			P0 = 0x08;				// 0000 1000 b
			Delay_nMs(500);
			P0 = 0x10;				// 0001 0000 b
			Delay_nMs(500);
			P0 = 0x20;				// 0010 0000 b
			Delay_nMs(500);
			P0 = 0x40;				// 0100 0000 b
			Delay_nMs(500);
			P0 = 0x80;				// 1000 0000 b
			Delay_nMs(500);
		}
	}
#endif
	
	
#ifdef 	LAMP_MODE2   // 使用数组表
	unsigned char lamps[8] = {0x80,0x40,0x20,0x10,0x08,0x04,0x02,0x01};
	while(1)
	{
		for(i=0;i<8;i++)
		{
			P0 = lamps[i];				// 0000 0001 b
			Delay_nMs(800);
		}
	}
#endif
	
	
#ifdef 	LAMP_MODE3	// 使用 << 左移运算符
	while(1)
	{
		for(i=0;i<8;i++)
		{
			P0 = ~(0x01 << i);				// 0000 0001 b
			Delay_nMs(500);
		}
	}
#endif
	
	return 0;
}


